package day21.Collections;

import java.util.ArrayList;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Stack;

public class MyClass {

	public static void main(String[] args) {

		// ArrayList<String> list = new ArrayList<String>(500); // ako ne slojim
		// <String> -
		// moje da ima
		// vsi4ko; mojem
		// <?
		// implements/extends/super
		// Animal>
		ArrayList list = new ArrayList(500);

		list.add("Taq klaviatura e mnogo stranna");
		list.add("Aide o6te 1 element");
		list.add(2, "Element na 2ta poziciq");
		list.add(null);
		list.add("Element na 3ta poziciq");

		list.remove(1);
		list.add(5.0); // ne stava, ako sme slojili <String>; no ot Java 5, ako
						// ne
						// sme slojili string - moje; ima wrapper - stava
						// avtomati4no i go preptravq na obekt ot klas integer,
						// koito kato value sadarja 4isloto 5; wrapper - class,
						// koito obviva primitivnite tip4eta
		list.add(Double.valueOf(5.0));// Double e wrapper na double

		list.set(0, "Towa e zamenen element");

		ArrayList l1 = new ArrayList();

		l1.add("Nov element, nov list");

		list.addAll(l1);

		list.ensureCapacity(1);// min capacity

		list.add("Taq klaviatura e mnogo stranna");

		System.out.println(list);

		System.out.println(list.size());

		// iterating
		for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
		}

		for (Object x : list) { // ako ima vsjakvi tipve - trjabva da e Object,
								// inak 6te dade ClassCastException
			System.err.println(x);
		}
		System.out.println(list.contains("Nov element, nov list"));

		Vegetable v1 = new Vegetable("Morkov");
		Vegetable v2 = new Vegetable("Krastavica");

		l1.add(v1);
		l1.add(v2);

		System.out.println(l1.contains(new Vegetable("Morkov"))); // -> false,
																	// za6toto
																	// polzva
																	// equals,
																	// koeto
																	// sravnqva
																	// REFERENCIITE!
		
		System.out.println(l1.indexOf(new Vegetable("Morkov")));
		System.out.println(l1.isEmpty());
		
		ArrayList l = new ArrayList();
		
		l.add(v1);
		l.add(v2);
		l1.add(v1);
		l1.add(v2);
		
		System.out.println(l1.containsAll(l));// ako ima povtoreniq - false;
		
		System.out.println(l1);
//		System.out.println(l1.removeAll(l));
//		System.out.println(l1);
		
		l1.add(new Vegetable("Domat"));
		l1.add(5);
		
		System.out.println(l1.retainAll(l));//vra6ta se4enieto
		System.out.println(l1.subList(3,l1.size()));
		
		l1.trimToSize();
		//Object[] x = l1.toArray();
		Object[] x = l1.toArray();
		
		Stack s = new Stack();
		s.push("Az sym element 1");
		s.push("Az sym element 2");
		s.push("Az sym element 3");
		
		
		System.out.println();
		
		while (!s.isEmpty())
			System.out.println(s.pop());
		
		Queue s1 = new PriorityQueue(); //nqma  klas queue, samo interface
		s1.offer("Az sym element 1");
		s1.offer("Az sym element 2");
		
		s1.offer("Az sym element 3");
		
		while (!s1.isEmpty())
			System.out.println(s1.poll());
		
	
	}

}
